/**
 *
 *@Author: wkq
 *
 *@Time: 2025/8/25 9:56
 *
 *@Desc:
 */


fun main() {

//    var a="a"
//
//    var b=a+"bc"
//    println("result="+a)
//    println("result="+b)
//
//    var c=0
//    var d=c+1
//    println("result="+c)
//    println("result="+d)

    var a=0
    var b=0

    println("执行前result="+a++)
    println("执行后result="+a)
    println("执行前result="+(++b))
    println("执行后result="+b)


//    println(add1()) // 1
//    println(add2()) // 1
//    println(add3()) // 1
//    val counter = makeCounter()  // counter 持有闭包
//    println(counter()) // 1
//    println(counter()) // 2
//    println(counter()) // 3

    var s = "Hi"
    s += " Kotlin"
}

fun add1():Int{
    var count=0
    return count++
}


fun add2():Int{
    var count=0

   count += 1
    return count
}
fun add3():Int{
    var count=0
    return ++count
}

// 闭包  :函数 + 它捕获的外部变量的引用
fun makeCounter(): () -> Int {
    var count = 0  // 局部变量，按普通规则函数执行完就销毁
    return { ++count }
}



fun heightFunction(x:Int):(Int,Int)->Int{
    return { a,b-> (a+b )*x }
}

/**
 *  高阶函数  (函数作为参数或者函数作为返回值的函数)
 */
fun addHeight(a:Int,b:Int ,add:(Int,Int)->Int):Int{
    return add(a,b)
}
